import type { RuleObject } from 'ant-design-vue/es/form';

/**
 * 判断功能菜单新增功能名
 * @returns
 */
export const vFunAmenuName = async (rule: RuleObject, value: string) => {
  const regName = /^[u4E00-\uFA29a-zA-Z0-9_]{0,25}$/;
  if (!regName.test(value)) {
    return Promise.reject(new Error('请输入25个以内的汉字、或50个以内的数字、英文字母、非特殊符号'));
  }
  return Promise.resolve();
};

/**
 * 判断功能菜单新增URL
 * @returns
 */
export const vFunAurl = async (rule: RuleObject, value: string) => {
  const regName =
    /^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_-]|["',，.。/、\][【】\\n\s！!?？——_<>%;‘’；：：)《（）》(&+=`“”·*#@@]){0,40}$/;
  if (!regName.test(value)) {
    return Promise.reject(new Error('请输入40个以内的汉字、或80个以内的数字、英文字母、非特殊符号'));
  }
  return Promise.resolve();
};

/**
 * 判断功能菜单新增代码
 * @returns
 */
export const vFunAmenuNo = async (rule: RuleObject, value: string) => {
  const regName = /^([a-zA-Z0-9_]|{[\s*"\w+":"\w+",*\s*]+\}){1,50}$/;
  if (!regName.test(value)) {
    return Promise.reject(new Error('请输入50个以内的字母，数字，下划线'));
  }
  return Promise.resolve();
};

/**
 * 判断功能菜单新增图标
 * @returns
 */
export const vFunAmenuCss = async (rule: RuleObject, value: string) => {
  const regName =
    /^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_-]|["',，.。/、\][【】\\n\s！!?？——_<>%;‘’；：：)《（）》(&+=`“”·*#@@]){0,200}$/;
  if (!regName.test(value)) {
    return Promise.reject(new Error('请输入100个以内的汉字、或200个以内的数字、英文字母、非特殊符号'));
  }
  return Promise.resolve();
};

/**
 * 判断功能菜单新增备注
 * @returns
 */
export const vFunAremark = async (rule: RuleObject, value: string) => {
  const regName =
    /^([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_-]|["',，.。/、\][【】\\n\s！!?？——_<>%;‘’；：：)《（）》(&+=`“”·*#@@])*$/;
  if (!regName.test(value)) {
    return Promise.reject(new Error('请输入100个以内的汉字、或200个以内的数字、英文字母、非特殊符号'));
  }
  return Promise.resolve();
};

/**
 * 判断功能菜单新增路由
 * @returns
 */
export const vFunAroute = async (rule: RuleObject, value: string) => {
  const regName = /^[a-zA-Z0-9_/"',，.。/、\][【】\\n\s！!?？——_<>%;:‘’；)《（）》(&+=`“”·*#@@]{0,50}$/;
  if (!regName.test(value)) {
    return Promise.reject(new Error('必须以/开头,形如/Hub/resourcej（50个以内的数字、英文字母）'));
  }
  return Promise.resolve();
};
